import dotenv from 'dotenv';

// 根据环境加载配置
const env = process.env.NODE_ENV || 'development';
dotenv.config({ path: `.env.${env}` });

/**
 * 获取完整的资源URL
 * @param {string} path - 资源路径
 * @returns {string} 完整的URL
 */
export function getFullUrl(path) {
  if (!path) return path;
  const serverUrl = process.env.SERVER_URL || 'http://localhost:9528';
  // 确保path以/开头
  const normalizedPath = path.startsWith('/') ? path : `/${path}`;
  return `${serverUrl}${normalizedPath}`;
}

/**
 * 转换资源对象中的URL字段
 * @param {Object} obj - 包含url字段的对象
 * @returns {Object} 转换后的对象
 */
export function transformUrls(obj) {
  if (!obj) return obj;

  // 如果是数组，递归处理每个元素
  if (Array.isArray(obj)) {
    return obj.map(item => transformUrls(item));
  }

  // 如果是 Sequelize 模型实例，先转换为普通对象
  if (obj.dataValues) {
    const plainObj = { ...obj.dataValues };
    if (plainObj.url) {
      plainObj.url = getFullUrl(plainObj.url);
    }
    return plainObj;
  }

  // 如果是普通对象
  if (typeof obj === 'object') {
    const transformed = { ...obj };
    if (transformed.url) {
      transformed.url = getFullUrl(transformed.url);
    }
    return transformed;
  }

  return obj;
}
